package com.zhzh.sc.demo.little.tools;

import org.springframework.util.StringUtils;

import java.io.File;
import java.util.Locale;

/**
 * @version V1.0
 * @Copyright 2021- csdn - Powered By 长沙研发中心
 * @author: zhzh
 * @date: 2021/7/30 10:53 上午
 */
public class RenameFile {


    /**
     * 下载资源缩略图名称替换
     *
     * @param args
     */
    public static void main(String[] args) {
        recursiveTraversalFolder("/Users/zhzh/Documents/work_doc/download/缩略图");
    }

    /**
     * 递归遍历文件夹获取文件
     */
    public static void recursiveTraversalFolder(String path) {
        File folder = new File(path);
        if (!folder.exists()) {
            System.out.println("文件不存在!");
            return;
        }

        File[] fileArr = folder.listFiles();
        if (null == fileArr || fileArr.length == 0) {
            System.out.println("文件夹是空的!");
            return;
        }

        //文件所在文件夹路径+新文件名
        File newDir;
        //新文件名
        String newName;
        //旧文件名
        String fileName;
        //文件所在父级路径
        File parentPath;
        for (File file : fileArr) {
            //是文件夹，继续递归，如果需要重命名文件夹，这里可以做处理
            if (file.isDirectory()) {
                System.out.println("文件夹:" + file.getAbsolutePath() + "，继续递归！");
                recursiveTraversalFolder(file.getAbsolutePath());
            } else {//是文件，判断是否需要重命名
                fileName = file.getName();
                parentPath = file.getParentFile();
                //文件名包含需要被替换的字符串
                if (!StringUtils.isEmpty(fileName)) {
                    if (fileName.contains("未知格式")) {
                        fileName = fileName.replace("未知格式", "UNKNOWN");
                    }
                    //新名字
                    String[] split = fileName.split("\\.");
                    newName = split[0].replaceAll("@2x", "").toUpperCase(Locale.ROOT) + "." + split[1].toLowerCase(Locale.ROOT);
                    //文件所在文件夹路径+新文件名
                    newDir = new File(parentPath + "/" + newName);
                    //重命名
                    boolean b = file.renameTo(newDir);
                    System.out.println("修改结果：" + b + ", 修改前：" + fileName + ", 修改后：" + newDir);
                }
            }
        }

    }


}
